<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>小兔鲜儿 - 新鲜 惠民 快捷!</title>
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="renderer" content="webkit">
  <link rel="stylesheet" href="./css/common.css">
  <link rel="stylesheet" href="./css/register.css">
  <link rel="stylesheet" href="./css/font_2143783_iq6z4ey5vu.css">
  <!-- <link rel="stylesheet" href="https://at.alicdn.com/t/font_2143783_iq6z4ey5vu.css"> -->
  <style>
    /* 属性选择器 */
    /* input[name=username] {
      background-color: #f99;
    } */
  </style>
</head>

<body>
  <!-- 项部导航 -->
  <div class="xtx_topnav">
    <div class="wrapper">
      <!-- 顶部导航 -->
      <ul class="xtx_navs">
        <li>
          <a href="./login.html">请先登录</a>
        </li>
        <li>
          <a href="./register.html">免费注册</a>
        </li>
        <li>
          <a href="./center-order.html">我的订单</a>
        </li>
        <li>
          <a href="./center.html">会员中心</a>
        </li>
        <li>
          <a href="javascript:;">帮助中心</a>
        </li>
        <li>
          <a href="javascript:;">在线客服</a>
        </li>
        <li>
          <a href="javascript:;">
            <i class="mobile sprites"></i>
            手机版
          </a>
        </li>
      </ul>
    </div>
  </div>
  <!-- 头部 -->
  <div class="xtx_header">
    <div class="wrapper">
      <!-- 网站Logo -->
      <h1 class="xtx_logo"><a href="/">小兔鲜儿</a></h1>
      <!-- 主导航 -->
      <div class="xtx_navs">
        <ul class="clearfix">
          <li>
            <a href="./index.html">首页</a>
          </li>
          <li>
            <a href="./category01.html">生鲜</a>
          </li>
          <li>
            <a href="./category01.html">美食</a>
          </li>
          <li>
            <a href="./category01.html">餐厨</a>
          </li>
          <li>
            <a href="./category01.html">电器</a>
          </li>
          <li>
            <a href="./category01.html">居家</a>
          </li>
          <li>
            <a href="./category01.html">洗护</a>
          </li>
          <li>
            <a href="./category01.html">孕婴</a>
          </li>
          <li>
            <a href="./category01.html">服装</a>
          </li>
        </ul>
      </div>
      <!-- 站内搜索 -->
      <div class="xtx_search clearfix">
        <!-- 购物车 -->
        <a href="./cart-none.html" class="xtx_search_cart sprites">
          <i>2</i>
        </a>
        <!-- 搜索框 -->
        <div class="xtx_search_wrapper">
          <input type="text" placeholder="搜一搜" onclick="location.href='./search.html'">
        </div>
      </div>
    </div>
  </div>
  <div class="xtx-wrapper">
    <div class="container">
      <!-- 卡片 -->
      <div class="xtx-card">
        <h3>新用户注册</h3>
        <form class="xtx-form">
          <div data-prop="username" class="xtx-form-item">
            <span class="iconfont icon-zhanghao"></span>
            <input name="username" type="text" placeholder="设置用户名称">
            <span class="msg"></span>
          </div>
          <div data-prop="phone" class="xtx-form-item">
            <span class="iconfont icon-shouji"></span>
            <input name="phone" type="text" placeholder="输入手机号码  ">
            <span class="msg"></span>
          </div>
          <div data-prop="code" class="xtx-form-item">
            <span class="iconfont icon-zhibiaozhushibiaozhu"></span>
            <input name="code" type="text" placeholder="短信验证码">
            <span class="msg"></span>
            <a class="code" href="javascript:;">发送验证码</a>
          </div>
          <div data-prop="password" class="xtx-form-item">
            <span class="iconfont icon-suo"></span>
            <input name="password" type="password" placeholder="设置6至20位字母、数字和符号组合">
            <span class="msg"></span>
          </div>
          <div data-prop="confirm" class="xtx-form-item">
            <span class="iconfont icon-suo"></span>
            <input name="confirm" type="password" placeholder="请再次输入上面密码">
            <span class="msg"></span>
          </div>
          <div class="xtx-form-item pl50">
            <i class="iconfont icon-queren"></i>
            已阅读并同意<i>《用户服务协议》</i>
          </div>
          <div class="xtx-form-item">
            <button class="submit">下一步</button>
            <!-- <a class="submit" href="javascript:;">下一步</a> -->
          </div>
        </form>
      </div>
    </div>
  </div>
  <!-- 公共底部 -->
  <div class="xtx_footer clearfix">
    <div class="wrapper">
      <!-- 联系我们 -->
      <div class="contact clearfix">
        <dl>
          <dt>客户服务</dt>
          <dd class="chat">在线客服</dd>
          <dd class="feedback">问题反馈</dd>
        </dl>
        <dl>
          <dt>关注我们</dt>
          <dd class="weixin">公众号</dd>
          <dd class="weibo">微博</dd>
        </dl>
        <dl>
          <dt>下载APP</dt>
          <dd class="qrcode">
            <img src="./uploads/qrcode.jpg">
          </dd>
          <dd class="download">
            <span>扫描二维码</span>
            <span>立马下载APP</span>
            <a href="javascript:;">下载页面</a>
          </dd>
        </dl>
        <dl>
          <dt>服务热线</dt>
          <dd class="hotline">
            400-0000-000
            <small>周一至周日 8:00-18:00</small>
          </dd>
        </dl>
      </div>
    </div>
    <!-- 其它 -->
    <div class="extra">
      <div class="wrapper">
        <!-- 口号 -->
        <div class="slogan">
          <a href="javascript:;" class="price">价格亲民</a>
          <a href="javascript:;" class="express">物流快捷</a>
          <a href="javascript:;" class="quality">品质新鲜</a>
        </div>
        <!-- 版权信息 -->
        <div class="copyright">
          <p>
            <a href="javascript:;">关于我们</a>
            <a href="javascript:;">帮助中心</a>
            <a href="javascript:;">售后服务</a>
            <a href="javascript:;">配送与验收</a>
            <a href="javascript:;">商务合作</a>
            <a href="javascript:;">搜索推荐</a>
            <a href="javascript:;">友情链接</a>
          </p>
          <p>CopyRight &copy; 小兔鲜儿</p>
        </div>
      </div>
    </div>
  </div>
  <script>
    // 需求①： 发送验证码
    //  1. 先获取元素  .code
    //  2. 给code注册click
    //  3. 开始倒计时 ==> 修改内容 05秒后重新获取  开定时器
    //  4. 倒计时结束 ==> 修改内容 为重新获取

    let codeObj = document.querySelector('.code')

    codeObj.addEventListener('click', function () {
      codeObj.innerHTML = `05秒后重新获取`

      // 细节：let num = 5需要写在click事件里面，确保每次点击的时候，倒计时都是从5开始的
      let num = 5 // num表示倒计时的时间从5开始

      let timerId = setInterval(function () {
        num--
        codeObj.innerHTML = `0${num}秒后重新获取`

        if (num === 0) {
          // 关闭定时器
          clearInterval(timerId)
          // 修改内容
          codeObj.innerHTML = `重新获取`
        }
      }, 1000)
    })


    // 封装verify函数来实现校验功能
    // 当把一段代码在使用函数封装的时候，要确保函数里面的内容不要写死的（参数来解决）
    // 形参reg 表示我们正则
    // 形参element 表示我们的表单元素
    // 形参tip 表示提示消息
    function verify(reg, element, tip) {
      // let reg = /^[a-zA-Z0-9-_]{6,16}$/

      // span
      let msg = element.nextElementSibling

      if (reg.test(element.value)) {
        // 说明是通过了 ==> 提示消息不要了
        msg.innerHTML = ''

        // 返回值true表示通过校验了
        return true
      } else {
        // 未通过
        // 找到span给设置内容
        msg.innerHTML = tip

        // 由于在点击下一步的时候，不仅要使用verify来校验，并且还需要得知校验后的结果，所有通过return返回值来告知校验结果
        // 返回值为false 表示校验未通过
        return false
      }
    }


    // 需求②： 用户名验证  是通过属性选择器来获取的， 按照name属性，值为username来获取
    let username = document.querySelector('input[name=username]')

    username.addEventListener('change', function () {
      // let reg = /^[a-zA-Z0-9-_]{6,16}$/

      // // span
      // let msg = username.nextElementSibling

      // if (reg.test(username.value)) {
      //   // 说明是通过了 ==> 提示消息不要了
      //   msg.innerHTML = ''
      // } else {
      //   // 未通过
      //   // 找到span给设置内容
      //   msg.innerHTML = '请输入6~16的字符'
      // }

      // 使用封装好的verify来校验
      verify(/^[a-zA-Z0-9-_]{6,16}$/, username, '请输入6~16的字符')
    })



    // 需求③： 手机号验证
    let phone = document.querySelector('input[name=phone]')

    phone.addEventListener('change', function () {
      // // 手机号的正则
      // let reg = /^1[3-9]\d{9}$/

      // // span
      // let msg = phone.nextElementSibling

      // if (reg.test(phone.value)) {
      //   // 说明是通过了 ==> 提示消息不要了
      //   msg.innerHTML = ''
      // } else {
      //   // 未通过
      //   // 找到span给设置内容
      //   msg.innerHTML = '请输入11位数字的手机号'
      // }

      // 使用封装好的verify来校验
      verify(/^1[3-9]\d{9}$/, phone, '请输入11位数字的手机号')
    })


    // 需求④： 验证码验证
    let code = document.querySelector('input[name=code]')

    code.addEventListener('change', function () {
      // // 验证码的正则 （6位数字）
      // let reg = /^\d{6}$/

      // // span
      // let msg = code.nextElementSibling

      // if (reg.test(code.value)) {
      //   // 说明是通过了 ==> 提示消息不要了
      //   msg.innerHTML = ''
      // } else {
      //   // 未通过
      //   // 找到span给设置内容
      //   msg.innerHTML = '请输入6位数字的验证码'
      // }

      verify(/^\d{6}$/, code, '请输入6位数字的验证码')
    })


    // 需求⑤： 密码验证  密码正则 /^[a-zA-Z0-9-_]{6,20}$/
    let password = document.querySelector('input[name=password]')

    password.addEventListener('change', function () {
      // let reg = /^[a-zA-Z0-9-_]{6,20}$/

      // // span
      // let msg = password.nextElementSibling

      // if (reg.test(password.value)) {
      //   // 说明是通过了 ==> 提示消息不要了
      //   msg.innerHTML = ''
      // } else {
      //   // 未通过
      //   // 找到span给设置内容
      //   msg.innerHTML = '请输入6到20位密码'
      // }

      verify(/^[a-zA-Z0-9-_]{6,20}$/, password, '请输入6到20位密码')
    })


    // 需求⑥： 再次密码验证
    //    需要获取两次输入的密码进行比较，如果内容不一致，就出现提示
    let confirm = document.querySelector('input[name=confirm]')
    confirm.addEventListener('change', function () {
      console.log(password.value, confirm.value)

      verifyPassword()
    })

    // 专门对确认密码和密码进行校验
    function verifyPassword() {
      // span
      let msg = confirm.nextElementSibling

      if (password.value === confirm.value) {
        // 一致的
        msg.innerHTML = ``
        return true
      } else {
        //  不一致
        msg.innerHTML = `两次输入的密码不一致`
        return false
      }
    }


    // 需求⑦： 我同意模块
    let btn = document.querySelector('.icon-queren')
    btn.addEventListener('click', function () {
      // 切换 icon-queren2 类名
      btn.classList.toggle('icon-queren2')
    })


    // 需求⑧： 提交按钮模块
    let submit = document.querySelector('.submit')
    submit.addEventListener('click', function (e) {
      // 点击的时候，需要去阻止表单默认行为（事件对象e有 preventDefault方法）
      e.preventDefault()

      // 对表单中的元素进行校验 ==> 调用verify函数就可以对表单元素进行校验
      let res1 = verify(/^[a-zA-Z0-9-_]{6,16}$/, username, '请输入6~16的字符')
      let res2 = verify(/^1[3-9]\d{9}$/, phone, '请输入11位数字的手机号')
      let res3 = verify(/^\d{6}$/, code, '请输入6位数字的验证码')
      let res4 = verify(/^[a-zA-Z0-9-_]{6,20}$/, password, '请输入6到20位密码')
      let res5 = verifyPassword()

      // console.log(res1, res2, res3, res4, res5)

      // 还需要判断 协议是否有勾选 ==> 依据是 icon-queren2 类名是否存在
      //  classList.add() 追加
      //  classList.remove() 移出
      //  classList.toggle() 切换
      //  classList.contains() 判断是否有指定类名，有返回true，没有返回false

      // console.log(btn.classList.contains('icon-queren2')) // true  false

      if (!btn.classList.contains('icon-queren2')) {
        // 没有 icon-queren2 类名，就表示没有勾选
        alert('请勾选协议')
        // return 阻止后续代码执行
        return
      }

      // .... 当表单通过了校验，并且还勾选了协议，就可以跳转页面 ==> 去登录页面
      if (res1 && res2 && res3 && res4 && res5) {
        // res1 到 res5的结果都为true（都通过了校验），才会执行if
        location.href = './login.html'
      }
    })
  </script>
</body>

</html>